package com.chandon.T04_stream.test;

import java.util.Arrays;

/**
 * 验证泛型是否符合规则返回boolean
 * a.找出数组中的自然数（大于等于0）
 * b.找出绝对值大于100的
 * c.找出偶数
 * d.打印自然数个数
 * e.负整数个数
 * f.绝对值大于100的偶数个数
 * g.打印负整数或偶数
 *
 * @author Dong
 * @version 1.0
 * @date 2021-04-20 13:46
 */

public class T02_StreamTest3 {
    public static void main(String[] args) {

        int[] arr = {-12345, 9999, 520, 0, -38, -7758520, 941213};
//        a(arr);
//        b(arr);
//        c(arr);
//        d(arr);
//        e(arr);
//        f(arr);
//        g(arr);

    }


    public static void a(int[] arr) {

    }

    public static void b(int[] arr) {

        System.out.println(
                Arrays.toString(
                        Arrays.stream(arr)
                                .filter(value -> Math.abs(value) > 100)
                                .toArray()
                )
        );
    }

    public static void c(int[] arr) {

        System.out.println(
                Arrays.toString(
                        Arrays.stream(arr)
                                .filter(value -> value % 2 == 0).toArray()
                )
        );
    }

    public static void d(int[] arr) {

        System.out.println(
                Arrays.stream(arr)
                        .filter(value -> value >= 0)
                        .count()
        );
    }

    public static void e(int[] arr) {

        System.out.println(
                Arrays.stream(arr)
                        .filter(
                                value -> (value != 0) && (value / Math.abs(value) < 0)
                        )
                        .count()
        );
    }

    public static void f(int[] arr) {

        System.out.println(
                Arrays.stream(arr)
                        .filter(
                                value -> (Math.abs(value) > 100) && (Math.abs(value) % 2 == 0)
                        )
                        .count());
    }

    public static void g(int[] arr) {

        System.out.println(Arrays.toString(Arrays.stream(arr).filter(value -> {
            return (value != 0 && ((Math.abs(value) / value < 0) || (value % 2 == 0)));
        }).toArray()));
    }

}
